Ext.define("AM.util.GridActionUtil", {
	
	/**
	 * 删除部门
	 * @param {Object} grid
	 * @param {Object} treeObj
	 * @return {TypeName} 
	 */
	doDelete: function(grid, treeObj) {
		if (!grid) {
			Ext.MessageBox.alert("提示", "doDelete 参数不正确！！");
			return;
		}
		
		//得到表格数据集
		var store = grid.getStore();
//		得到修改过的数据
		var records = grid.getSelectionModel().getSelection();
		var data = [];
		Ext.Array.each(records, function(model) {
			//把数据编码成json的格式
			data.push(Ext.JSON.encode(model.get('id')));
		});
		
		//ajax
		if (data.length > 0) {
			Ext.Ajax.request({
				url:store.getProxy().api['remove'],
				params: {data: "["+data.join(',')+"]"},
				method: 'post',
				timeout: 2000,
				//ajax请求成功--处理函数--删除成功
				success: function(response, opts) {
					//console.log(response.responseText);
					Ext.Array.each(records,function(model) {
						Ext.Array.each(records,function(model) {
							store.remove(model);  //删除表格数据
							//删除tree节点
							var node = treeObj.getStore().getNodeById(model.get('id'));
							var parentNode = node.parentNode;
							try {
								node.remove(true);
								if (parentNode) {
									if (!parentNode.getChildAt(0)) {
										parentNode.data['leaf'] = true;
										parentNode.updateInfo();
									}
								}
							} catch(e) {
								console.log(e);
							}
						});
					});
				}
			});
		}
	},
	
	/**
	 * 保存记录
	 * @param {Object} grid
	 * @param {Object} treeObj
	 */
	doSave: function(grid, treeObj) {
		if (!grid) {
			Ext.MessageBox.alert("提示", "doSave 参数不正确！！");
			return;
		}
		
		//得到表格数据集
		var store = grid.getStore();
		//alert("store length " +　store.getCount());
//		得到修改过的数据　　return Ext.data.Model[]
		var records = store.getUpdatedRecords();  //取得修改了但有没有同步的数据
		alert(records.length);
		var data = [];
		Ext.Array.each(records, function(model) {
			//把数据编码成json的格式
			data.push(Ext.JSON.encode(model.data));
		});
		alert("save　" + data.length);
		
		//ajax
		if (data.length > 0) {
			Ext.Ajax.request({
				url:store.getProxy().api['update'],
				params: {data: "["+data.join(',')+"]"},
				method: 'post',
				timeout: 2000,
				//ajax请求成功--处理函数
				success: function(response, opts) {
					//console.log(response.responseText);
					Ext.Array.each(records,function(model) {
						var node = treeObj.getStore().getNodeById(model.get('id'));
						alert("text" + model.get('text'));
						node.data['text'] = model.get('text');
						node.updateInfo();
						//取消左上角的标识
						node.commit();
					});
				}
			});
		}
	},
	
	/**
	 * 表格的插入
	 * @param {Object} grid
	 * @param {Object} modelObj
	 * @param {Object} treeObj
	 */
	doInsert: function(grid, modelObj, treeObj) {
		if (!(grid && modelObj)) {
			Ext.MessageBox.alert("提示", "doInsert 参数不正确！！");
			return;
		}
		//得到表格数据集
		var store = grid.getStore();
		//得到表格数据集的长度
		var storeCount = store.getCount();
		//得到编辑的插件
		var edit = grid.editing;
		//得到数据模型
		var model = store.model;
		if (0 == storeCount) {
			var deptObj = new model(modelObj);
			edit.cancelEdit();//取消编辑状态
			store.insert(0, deptObj);
			edit.startEditByPosition({row: 0, column: 1});  //吧第一行第一列变为可编辑
			
			if (treeObj) {
				var rootNode = treeObj.getStore().getRootNode();  //得到根节点
				rootNode.appendChild({
					id: modelObj['id'],
					text: modelObj['text'],
					leaf: modelObj['leaf']
				});
			}
		} else {
			//得到被选中的数据集  getSelection返回一个model数组
			var checkedRecords = grid.getSelectionModel().getSelection();
			if (1 == checkedRecords.length) {
				var parentRecord = checkedRecords[0];
				modelObj['nodeType'] = 'GENERAL';
				
				modelObj['id'] = 'A000';
				var parentNode = treeObj.getStore().getNodeById(parentRecord.get('id'));
				try {
					parentNode.data['leaf'] = false;
					parentNode.updateInfo();  //更新节点
					//add node
					parentNode.appendChild({
						id: 'A000',
						text: 'text',
						leaf: true
					});
					parentNode.expand();
				} catch(e) {
					console.log(e);
				}
				
				var deptObj = new model(modelObj);
				edit.cancelEdit();//取消编辑状态
				store.insert(0, deptObj);
				edit.startEditByPosition({row: 0, column: 1});  //吧第一行第一列变为可编辑
			} else {
				Ext.MessageBox.alert("提示", "請選擇一個父級部門！！");
			}
		}
	}
});